<?php
/*
error_reporting("E^ALL");
set_error_handler('_exception_handler');

function _exception_handler($severity, $message, $filepath, $line){

	switch($severity){
		case E_USER_ERROR:
			// Erreur fatale
			$deg = "error";
		break;

		case E_USER_WARNING:
			// Avertissement
			$deg = "warning";
		break;

		case E_USER_NOTICE:
			// Remarque
			$deg = "notice";
		break;

		default:
			// Autre type d'erreur indéfini, on considère comme un warning
			$deg = "warning";
		break;

	}

	// Appelle notre gestionnaire d'erreur
	erreur($deg, "Erreur PHP", $message." (fichier : ".$filepath.", ligne : ".$line.")");
}
*/

include("Common.php");
// ------------------

$tstart = microtime(true);

function parsechars($c){
	return str_replace(array("&", "<", ">", "=", "\""), array("&amp;", "&lt;", "&gt;", "&#61;", "&quot;"), $c);
}
function unparsechars($c){
	return str_replace(array("&amp;", "&lt;", "&gt;", "&#61;", "&quot;"), array("&", "<", ">", "=", "\""), $c);
}

// NETTOYAGE DES ENTREES
if (get_magic_quotes_gpc()) { 
	// on a les magic quotes activés, on stripslashes en plus
	foreach($_POST as $k => &$p){
		if (is_array($p)){
			foreach ($p as &$p2)
				$p2 = stripslashes(parsechars($p2, ENT_NOQUOTES));
		}else
			$p = stripslashes(parsechars($p, ENT_NOQUOTES));
	}
}else{
	foreach($_POST as $k => &$p){
		if (is_array($p)){
			foreach ($p as &$p2)
				$p2 = parsechars($p2, ENT_NOQUOTES);
		}else
			$p = parsechars($p, ENT_NOQUOTES);
	}
}

// TRAITEMENT DE LA CHAINE D'URL
$path = explode("/", parsechars($_SERVER["PATH_INFO"]));
$slices = array();

foreach($path as $s){
	if ($s != "")
		$slices[] = $s;
}

// ROUTAGE SELON LES REGLES DU SITE
$res = routage($slices);

$c = $res[0];
$m = $res[1];
$params = $res[2];

// DEBUG
//echo "<br /><br />c : ".$c."<br />m : ".$m."<br />params : ".$params."<br /><br />";


// CHARGEMENT DU CONTROLEUR
$controller = ucfirst(strtolower($c));
$method = ucfirst(strtolower($m));

// AUTHENTIFICATION
$a =& load("Sessions");
if ($controller != "Main" || $method != "Connexion")
	$a->verifiersession(); // On laisse passer si c'est une tentative de connexion

if (!file_exists($PATHBASE."controllers/".$controller.".php"))
	die("controleur inexistant"); //throw_new_Erreur("Contrôleur", "Le fichier contrôleur '".$controller."' n'existe pas sur le serveur");

include($PATHBASE."controllers/".$controller.".php");

if (!class_exists($controller))
	die("controleur malformé"); //throw_new_Erreur("Contrôleur", "Le controleur '".$controller."' n'est pas valide");


if (count($_POST) > 1 || (!isset($_POST["rndval"]) && count($_POST) > 0))
	// On a du POST (et on ignore les cas d'accès en AJAX)
	// on est sur une validation de formulaire, on appelle _Methode
	$method = "_".$method;

if (!method_exists($controller, $method))
	die("methode inexistante"); //throw_new_Erreur("Contrôleur", "La méthode '".$method."' du controleur '".$controller."' n'existe pas");

// Instanciation du contrôleur, et appel de la méthode demandée
$cl = new $controller();
$cl->{$method}($params);

// ------------
// Désormais c'est le contrôleur qui a la main
// On ne la reprend que lorsqu'il se détruit
// ------------

echo '<center><br /><div>Page exécutée en '.(microtime(true)-$tstart).' secondes</div></center>';






?>
